home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 19
/
Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso
/
Aminet
/
gfx
/
misc
/
PVKat.lha
/
PVKat
/
PVKat.rexx
< prev
Wrap
OS/2 REXX Batch file
|
1997-03-13
|
12KB
|
404 lines
/*********************/
/* PicView Kataloger */
/*********************/
/*: Standarteinsellungen */
arg con
options results
numeric digits 3
signal on BREAK_C
et = '0A'x
az = '"'
homedir = Pragma(D)
if ~show('L','rexxMOOS.library') then addlib("rexxMOOS.library",100,-30)
if ~show('L','rexxMOOS.library') then call MOOSERROR
/*=*/
/*: Variable */
tag = 'Pub PicView ReqPos CENTERSCR'
qdir = homedir
if exists("s:PVKat.pref")
then
do
if ~readargs(ReadBlock('s:pvkat.pref'),"tag2/A,minkb/A/N,maxmb/A/N,zs/A/N,ua/A/N,pvdir/A,skat/A,tempdir/A,ekat/A/N") then call PREFSERROR
/* tag2 = Multiselect-Tag */
/* minkb = System-Speicher minimum */
/* maxmb = Katalog Speichergrösse maximum */
/* zs = Absturtzsicherung */
/* ua = Unterverzeichnis Abfrage */
/* pvdir = PicView Verzeichnis */
/* skat = Satandart Katalog Verzeichnis */
/* tempdir = Temporeres Fest-Verzeichnis */
/* ekat = Automatischer Ersatzkatalog */
kat.drawer = skat
end
else
do
minkb = 1024
maxmb = 4
tempdir = qdir
pvdir = "PicView:"
skat = qdir
call GOPTION
call OPTION
kat.drawer = skat
end
kat.filename = ""
auto = 0 /* Automatisirung */
smode = 0
qdirm.count = 0 /* Multiselect erkennung */
index = 2 /* Startindex zu Sicherheitskatalogen */
zusatz.0 = '.tempa' /* Sicherheitskatalogerweiterung 0 */
zusatz.1 = '.tempb' /* Sicherheitskatalogerweiterung 1 */
zusatz.2 = '' /* Sicherheitskatalogerweiterung 2 */
filetexthead = '/* PVKat Auto-Rexx-Liste */'et et
filetexthead = filetexthead || 'parse arg bildnr katalog'et
filetexthead = filetexthead || 'katalog = compress(katalog)'et et
filetexthead = filetexthead || 'options results'et
filetexthead = filetexthead || 'options failat 6'et et
filetexthead = filetexthead || "if ~show('L','rexxMOOS.library') then addlib("az"rexxMOOS.library"az",100,-30)"et
filetexthead = filetexthead || "if ~show('L','rexxMOOS.library') then exit 10"et et
filetexthead = filetexthead || "az = '"az"'"et et
filetexthead = filetexthead || 'exall("'tempdir'PV.rexx","temp. Fields 3")'et
filetexthead = filetexthead || 'memo = ('minkb' * 1024) - temp.0.size'et
filetexthead = filetexthead || 'if memo < 524288 then memo = 524288'et et
filetexthead = filetexthead || "address command 'avail >nil: flush'"et
filetexthead = filetexthead || 'address PICVIEW.1'et
filetexthead = filetexthead || 'signal value(bildnr)'et et
filetextmem = "execute('avail total','temp.')"et
filetextmem = filetextmem || 'if temp.0 < memo then exit'et
/*=*/
/*: Programm überprüfung */
if ~show('P','PICVIEW.1')
then
do
address COMMAND 'run >nil: "'pvdir'PicView"'
waitforport PICVIEW.1
call Delay(250)
end
if exists(tempdir'pv.rexx') then call ABSTURTZ
/*=*/
/*: Modus-Wahl */
modus:
text = "Welchen Modus?"
auto = rqteasyreq(text,'_Manuel|_Automatisch|*_EXIT*|_OPTION Title "Modus-Wahl" 'tag)
if auto = 0
then
do
call OPTION
signal modus
end
if auto = 3 then exit 0
if ua = 1 & smode = 0 then call UNT
if auto = 2 & smode = 0 then call KAT
smode = 1
/*=*/
/*: Quell- und Katalog-Verzeichnis */
If auto = 2 then call MAXTEST
else call KAT
do forever
oldqdir = qdir
qdir = rqtfilereq(,qdir,'Title "gebe Quelle an" Stem "qdirm."' tag2 tag)
if qdir ~= "" then break
qdir = oldqdir
end
if ua = 0 then call UNT
/*=*/
/*: List Anweisung */
address REXX
if exists(tempdir"temp.list") then address command 'delete >nil: 'tempdir'temp.list'
if qdirm.count = 0 then address command 'list 'qdir' >'tempdir'temp.list 'listtag' lformat %f%S'
else
do i=0 to qdirm.count-1
address command 'list 'addpart(qdirm.drawer,qdirm.i)' >>'tempdir'temp.list 'listtag' lformat %f%S'
end
qdir = qdirm.drawer
drop qdirm.
bild = 0
index = 2
Open(quelle,tempdir"temp.list",r)
WriteBlock(tempdir"PV.rexx",filetexthead)
do forever
if eof(quelle) then leave
file = readln(quelle)
if file = "" then iterate
if zs = 1
then
do
bild = bild + 1
index = bittst(bild,0)
filetextbild = bild':'et
if bild = 1 then filetextbild = filetextbild || 'WriteBlock("'tempdir'bild.temp","'bild' 2")'et
else filetextbild = filetextbild || 'WriteBlock("'tempdir'bild.temp","'bild' 'value(~index)'")'et
WriteBlock(tempdir"PV.rexx",filetextbild,Append)
end
filetext = filetextmem || 'ADDPIC "'file'"'et
if zs = 1 then filetext = filetext || 'saveproject az || katalog || 'az || zusatz.index || az' || az'et et
WriteBlock(tempdir"PV.rexx",filetext,Append)
end
if zs = 0 then filetextend = 'saveproject az || katalog || az'et
else
do
filetextend = et et'address command'et
filetextend = filetextend || "if exists(katalog) then 'delete >nil: 'az || katalog || az"et
filetextend = filetextend || "'rename >nil: 'az || katalog || "az || zusatz.index || az" || az az || katalog || az"et
filetextend = filetextend || "'delete >nil: 'az || katalog || "az || zusatz.0 || az" || az"et
filetextend = filetextend || "'delete >nil: 'az || katalog || "az || zusatz.1 || az" || az"et
end
filetextend = filetextend || "address command 'delete >nil: "tempdir"mem.temp "tempdir"bild.temp'"et
WriteBlock(tempdir"PV.rexx",filetextend,Append)
Close(quelle)
address command 'delete >nil: 'tempdir'temp.list'
/*=*/
/*: Katalog erstellen */
bildnr = 1
call LIST
signal modus
/*=*/
exit 0
/* Unter-Programme */
/*: KAT */
KAT:
address PICVIEW.1
do forever
katalog = rqtfilereq(kat.filename,kat.drawer,'Title "Katalog" Stem kat.' tag)
if katalog ~= "" then break
end
call MAXTEST
if exists(katalog)
then
do
openproject katalog
text = "Wollen sie den Katalog:"et || katalog || et"mit der momentanen Grösse von"et || (byte.0.size/1024)/1024 "MByte"et" erweitern?"
res = rqteasyreq(text,'_Ja|Über_schreiben|_Nein title "Katalog existirt"' tag)
if res = 0 then call KAT
if res = 1 then uebs = 0
else uebs = 1
if res = 2 then newproject force
end
else
do
newproject force
uebs = 0
end
return
/*=*/
/*: OPTION */
OPTION:
text = "Grundeinstellung ändern"
res = rqteasyreq(text,'_Nein|_Ja Title "Grundeinstellung"'tag)
if res = 0 then call GOPTION
text = "Welchen Modus soll der Bildverzeichnis-Requester haben?"
res = rqteasyreq(text,'_Multiselect|_Einzel-Verzeichnise Title "Requester-Modus"' tag)
if res = 1 then tag2 = 'Flags MULTI|SELDIRS'
else tag2 = 'Flags NOFILES'
text = "Sollen Ersatzkataloge automatisch erstellt werden"
ekat = ~rqteasyreq(text,'_Nein|_Ja Title "Ersatzkataloge"' tag)
text = "Wieviel System-Speicher in kByte soll übrig bleiben"
minkb = rqtlongreq(text,'Number 'minkb' Title "Speicherabfrage"' tag)
text = "Wiviel Speicher in MByte darf der Katalog haben?"
maxmb = rqtlongreq(text,'Number 'maxmb' Title "Speicherabfrage"' tag)
text = "Ständife Unterverzeichnise abfrage?"
ua = rqteasyreq(text,'_Nein|_Ja Title "Sicherungs-Kataloge"' tag)
text = "Soll die Option gespeichert werden?"
if exists("s:PVKat.pref") then res = rqteasyreq(text,'_Ja|_Nein Title "Option speichern"' tag)
else res = 1
if res = 1
then
do
pref = '"'tag2'"' minkb maxmb zs ua '"'pvdir'"' '"'skat'"' '"'tempdir'"' ekat
WriteBlock("s:PVKat.pref",pref)
end
return
/*=*/
/*: GOPTION */
GOPTION:
pvdir = rqtfilereq(,pvdir,'Title "Bitte PicView-Verzeichnis angeben."' tag 'Flags NOFILES')
skat = rqtfilereq(,skat,'Title "Standart Katalog-Verzeichniss"' tag 'Flags NOFILES')
tempdir = rqtfilereq(,tempdir,'Title "Temp-Verzeichnis"' tag 'Flags NOFILES')
text = "Sollen Absturz gesichert gearbeitet werden?"
zs = rqteasyreq(text,'_Ja|_Nein Title "Sicherungs-Kataloge"' tag)
return
/*=*/
/*: ABSTURTZ */
ABSTURTZ:
text = "Sie hatten einen Systemabsturtz"et"Möchten sie die abgebrochene Archivirung weitermachen"
if con = "CONTINUE" then res = 1
else res = rqteasyreq(text,'_Ja|_Nein Title "Absturtz"' tag)
if res = 1
then
do
if ~readargs(readblock(tempdir'kat.temp'),"katalog/A,qdir/A,uebs/A/N") then call KATERROR
if res = 0 then break
if ~readargs(readblock(tempdir'bild.temp'),"bildnr/A/N,index/A/N") then call BILDERROR
if res = 0 then break
if exists(tempdir'fehler.temp') then if compress(readblock(tempdir'fehler.temp'),et) = bildnr then bildnr = bildnr + 1
if ~exists(katalog || zusatz.index) then call KATALOGERROR
if (uebs = 1 & bildnr = 1) | res = 2 then address PICVIEW.1 'newproject force'
else address PICVIEW.1 'openproject "'katalog || zusatz.index'"'
call LIST
end
drop con
return
/*=*/
/*: ABBRUCH */
ABBRUCH:
if ~readargs(readblock(tempdir'bild.temp'),"bildnr/A/N,index/A/N") then call BILDERROR
if res = 0 then return
if index ~= 2
then
do
address command
if exists(katalog) then 'delete >nil: 'katalog
'rename >nil: 'katalog || zusatz.index katalog
'delete >nil: 'katalog || zusatz.0
'delete >nil: 'katalog || zusatz.1
end
if ekat = 1 | con = "CONTINUE"
then
do
call EKAT
end
else
do
text = "Ihr System-Speicher ist unter den angegebenen Minimalwert gefallen"et"Sie müssen einen neuen Katalognamen wählen"
rqteasyreq(text,'_OK Title "geringer System-Speicher"' tag)
call KAT
text = "Wollen sie die Archivirung neu beginnen oder einfach weitermachen"
res = rqteasyreq(text,'_Neubegin|_Weitermachen Title "geringer System-Speicher"' tag)
if res = 1 then bildnr = 1
end
address PICVIEW.1 newproject force
call LIST
return
/*=*/
/* Unter Routinen */
/*: UNT */
UNT:
text = "Sollen auch die Unterverzeichnise"et"archivirt werden?"
res = rqteasyreq(text,'_Ja|_Nein Title "Unterverzeichnis rückfrage"' tag)
if res = 1 then listtag = "files all"
else listtag = "files"
/*=*/
/*: MAXTEST */
MAXTEST:
if ~exists(katalog) then return
exall(katalog,'byte. Fields 3')
if (byte.0.size/1024)/1024 > maxmb
then
do
text = "Katalog ist grösser als sie zugelassen haben."
rqteasyreq(text,'_OK Title "Katalog zu gross"' tag)
katalog = oldkat
call KAT
end
return
/*=*/
/*: EKAT */
EKAT:
if lastpos('.',katalog) = length(katalog)-1 then katalog = delstr(katalog,lastpos('.',katalog))
i=0
do forever
i = i + 1
if ~exists(katalog || '.' || i)
then
do
katalog = katalog || '.' || i
return
end
end
return
/*=*/
/*: LIST */
LIST:
address REXX
writeblock(tempdir"kat.temp",'"'katalog'" "'qdir'" 'uebs)
address command 'rx 'tempdir'pv.rexx 'bildnr katalog
address command 'delete >nil: 'tempdir'kat.temp 'tempdir'mem.temp'
if exists(tempdir'bild.temp') then call ABBRUCH
address command 'delete >nil: 'tempdir'pv.rexx'
return
/*=*/
/* Fehler */
/*: Break */
BREAK_C:
exit 10
/*=*/
/*: Moos.library Fehler */
MOOSERROR:
say 'Kann "rexxMOOS.library" nicht finden'
exit 10
/*=*/
/*: Prefs Fehler */
PREFSERROR:
text = 'fehler beim lesen der Prefs-Datei'
rqteasyreq(text,'_OK Title "Prefs Frehler"' tag)
exit 10
/*=*/
/*: Temporary-dateifehler "Kat.Temp" */
KATERROR:
text = 'Fehler beim lesen der Temporary-datei "Kat.Temp"'
rqteasyreq(text,'_OK Title "Kat-Temp Frehler"' tag)
res = 0
Return
/*=*/
/*: Temporary-dateifehler "Bild.Temp" */
BILDERROR:
text = 'Fehler beim lesen der Temporary-datei "bild.Temp"'et
test = text || 'Wollen sie denn eingegebenen Katalog neu Anfangen'
if con = "CONTINUE" then res = 1
else res = rqteasyreq(text,'_Neu|_Abbruch Title "Kat-Temp Frehler"' tag)
if res = 0 then return
index = 2
bildnr = 1
Return
/*=*/
/*: Katalog-Datei nicht gefunden */
KATALOGERROR:
text = 'Konnte keinen Startkatalog finden'
if con = "CONTINUE" then res = 2
else rqteasyreq(text,'_OK Title "Katalog Fehler"' tag)
res = 2
return
/*=*/